#!/usr/bin/env python3
# -*- coding: utf-8 -*-

"""
火之夜工作室 桌面路径获取工具

用于获取不同操作系统下的桌面路径
"""

import os
import platform

def get_desktop_path():
    """
    获取用户桌面路径，支持多操作系统
    
    Returns:
        str: 桌面路径
    """
    system = platform.system()
    
    if system == 'Darwin':  # macOS
        desktop_path = os.path.expanduser('~/Desktop')
    elif system == 'Windows':  # Windows
        # 尝试从注册表获取桌面路径
        try:
            import winreg
            with winreg.OpenKey(winreg.HKEY_CURRENT_USER, 
                               r'Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders') as key:
                desktop_path = winreg.QueryValueEx(key, 'Desktop')[0]
        except (ImportError, WindowsError):
            # 如果注册表访问失败，使用默认路径
            desktop_path = os.path.join(os.path.expanduser('~'), 'Desktop')
    elif system == 'Linux':  # Linux
        # 首先尝试从环境变量获取
        desktop_path = os.environ.get('XDG_DESKTOP_DIR')
        if desktop_path and os.path.exists(desktop_path):
            return desktop_path
            
        # 尝试获取XDG_DESKTOP_DIR环境变量
        xdg_config = os.path.expanduser('~/.config/user-dirs.dirs')
        if os.path.exists(xdg_config):
            try:
                with open(xdg_config, 'r', encoding='utf-8') as f:
                    for line in f:
                        if line.startswith('XDG_DESKTOP_DIR='):
                            # 提取路径并处理引号和$HOME
                            path = line.split('=')[1].strip().strip('"')
                            path = path.replace('$HOME', os.path.expanduser('~'))
                            if os.path.exists(path):
                                return path
            except Exception:
                # 如果读取配置文件失败，继续尝试其他方法
                pass
        
        # 如果无法从配置获取，使用默认路径
        desktop_path = os.path.expanduser('~/Desktop')
        # 如果默认路径不存在，尝试本地化名称
        if not os.path.exists(desktop_path):
            desktop_path = os.path.expanduser('~/桌面')  # 中文系统
            if not os.path.exists(desktop_path):
                desktop_path = os.path.expanduser('~')  # 回退到用户主目录
    else:
        # 未知系统，使用用户主目录
        desktop_path = os.path.expanduser('~')
    
    # 确保路径存在，如果不存在则回退到用户主目录
    if not os.path.exists(desktop_path):
        desktop_path = os.path.expanduser('~')
        
    return desktop_path